package com.sf.shiva.oms.common.util;

import java.util.Base64;
import java.util.UUID;
/**
 * 描述：UUID生成器 
 * <pre>HISTORY
 * ****************************************************************************
 *  ID   DATE           PERSON          REASON
 *  1    2016年6月24日      80002031         Create
 * ****************************************************************************
 * </pre>
 * @author 80002031
 * @since
 */
public class UUIDGenerator { 
    
    private UUIDGenerator(){}
    
     public static String generate() {  
         return gen(); 
     }  
     
     /** 
        * @Description 生成UUID
        * @Param
        * @Date 2016年10月20日        
        * @Return
      */
     private static  String gen() {
            UUID uuid = UUID.randomUUID();
            byte[] data = new byte[24];
            write(data, 0, System.currentTimeMillis());
            write(data, 8, uuid.getMostSignificantBits());
            write(data, 16, uuid.getLeastSignificantBits());
            return Base64.getEncoder().encodeToString(data);  
    } 
     
     /** 
        * @Description 进行移位计算
        * @Param
        * @Date 2016年10月20日        
        * @Return
      */
     private static void write(byte[] data, int start, long value) {
        data[start + 0] = (byte) (value >>> 56);
        data[start + 1] = (byte) (value >>> 48);
        data[start + 2] = (byte) (value >>> 40);
        data[start + 3] = (byte) (value >>> 32);
        data[start + 4] = (byte) (value >>> 24);
        data[start + 5] = (byte) (value >>> 16);
        data[start + 6] = (byte) (value >>> 8);
        data[start + 7] = (byte) (value >>> 0);
    } 
}
